#pragma once
#include <semaphore.h>

namespace wxd
{
    const unsigned int default_value = 1;
    class Sem
    {
    public:
    Sem(unsigned int sem = default_value)
    {
        sem_init(&_sem,0,sem);
    }

    void P()
    {
        sem_wait(&_sem);
    }
    void V()
    {
        sem_post(&_sem);
    }

    ~Sem()
    {
        sem_destroy(&_sem);
    }
    private:
    sem_t _sem;
    };
}